#include "ShaderManager.h"

using namespace std;

ShaderManager* ShaderManager::_instance = NULL;

/////////////////////////////////////////////////////////////////////
//Constructor & Destructor
/////////////////////////////////////////////////////////////////////

ShaderManager::ShaderManager()
{
	
	Shader* shader_basic = new Shader();
	shader_basic->LoadVertexShader("Shaders/basic.vs");
	shader_basic->LoadFragmentShader("Shaders/basic.fs");
	shader_basic->Create();
	
	_shaders.insert(std::make_pair<std::string, Shader*>("basic", shader_basic));
}


ShaderManager::~ShaderManager()
{
	_instance = NULL;

	map<string, Shader*>::iterator it = _shaders.begin();
	while(it != _shaders.end())
	{
		it->second->Destroy();
		delete(it->second);
		++it;
	}
	_shaders.clear();
	
}


/////////////////////////////////////////////////////////////////////
//Get Shader
/////////////////////////////////////////////////////////////////////

Shader* ShaderManager::GetShader(std::string name)
{
	map<string, Shader*>::iterator pos = _shaders.find(name);
	if(pos == _shaders.end())
		return 0;
	else 
		return pos->second;
}